package foroweb.controllers.secured;

import foroweb.controllers.ComprobarRol;
import foroweb.ejb.*;
import foroweb.entidades.Seccion;
import foroweb.entidades.Usuario;
import java.io.Serializable;
import java.util.*;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.*;
import javax.faces.context.FacesContext;

@ManagedBean
@RequestScoped
public class AdminSeccionesController implements Serializable{
    
    //Atributos
    @EJB
    private AccionSeccion as;
    @EJB
    private Busquedas buscar;
    private Seccion sec;
    private String user;
    private List<Seccion> ls;

    //Constructores
    public AdminSeccionesController() throws Exception{
        ComprobarRol cr=new ComprobarRol();
        if(cr.checkRole("Administrador")){
            sec=new Seccion();
        }else{
            throw new Exception("Debes ser un Administrador para acceder a este sitio");
        }
    }

    //Getters y Setters
    public List<Seccion> getLs() {
        ls=buscar.buscarSecciones("");
        return ls;
    }
    public void setLs(List<Seccion> ls) {
        this.ls = ls;
    }
    public Seccion getSec() {
        return sec;
    }
    public void setSec(Seccion sec) {
        this.sec = sec;
    }
    public String getUser() {
        return user;
    }
    public void setUser(String user) {
        this.user = user;
    }

    //Metodos
    public String eliminarSeccion(Seccion s){
        as.borrar(s);
        return "/secured/adminSecciones";
    }
    public String crearSeccion(){
        as.crear(sec);
        return "/secured/adminSecciones";
    }
    public String moderar(Seccion s){
        Usuario u=buscar.buscarUsuario(user);
        if(u==null){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Ese usuario no existe." ,null));
        }else{
            if(!u.getRol().equals("Estandar")){
                s.getModeradores().add(u);
                as.modificar(s);
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Moderador añadido con exito." ,null));
            }else{
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"El usuario debe ser un Moderador o un Administrador." ,null));
            }
        }
        return "/secured/adminSecciones";
    }
    public String quitar(Seccion s){
        Usuario u=buscar.buscarUsuario(user);
        if(s.getModeradores().contains(u)){
            s.getModeradores().remove(u);
            as.modificar(s);
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Moderador quitado con exito." ,null));
        }else{
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Ese usuario no modera esta seccion." ,null));
        }
        return "/secured/adminSecciones";
    }
    public String obtenerModeradores(Seccion s){
        String lista="";
        Usuario u;
        List<Usuario> lu=s.getModeradores();
        Iterator i=lu.iterator();
        while(i.hasNext()){
            u=(Usuario)i.next();
            if(!lista.equals("")){
                lista=lista+", ";
            }
            lista=lista+u.getNick();
        }
        return lista;
    }
}
